-
Notifications
You must be signed in to change notification settings - Fork 19
Add min-fill ordering. #199
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
This should probably be toggled by a setting. |
Thank you for this suggestion, which looks very interesting. Two questions here:
Do you have some idea what is going on here? Is the min-fill ordering in some way advantageous for chordal decomposition specifically? If so, I guess it would make sense to allow a choice or ordering methods for the chordal decomposition independently of the KKT factorisation. Perhaps that's preferable anyway, since some linear solvers (e.g. MKL) use their own orderings anyway.
|
|
See here: https://github.com/oxfordcontrol/Clarabel.jl/tree/pg/pr199 All that is required is to provide an ordering for the main kkt solver in exactly the way you did within the chordal decomposition code. In the branch above it's just a one-line change, although it would only work when using the |
Following up on 2.
The current implementation of |
@goulart-paul Incidentally, I am working on a generic tool for performing the decomposition. https://github.com/samuelsonric/MathOptChordalDecomposition.jl |
You are currently using the AMD algorithm to compute elimination orderings (as part of your clique tree machinery). AMD is a great linear-time algorithm, but there are quadratic-time algorithms that compute orderings with less fill. This PR replaces AMD with the minimum-local-fill algorithm. On some problems, the difference in solve time is dramatic.
julia> using Clarabel, ClarabelBenchmarks
AMD
Minimum-Local-Fill
I omitted the greater part of the printout.